import { ref } from 'vue'
import pageModel from '@/ components/page-model'

type callbackFn = (item?: any) => void
export function usePageModel(createCb?: callbackFn, editCb?: callbackFn) {
  const pageModelRef = ref<InstanceType<typeof pageModel>>()
  // A1. 先定义一个变量，并且绑定object，即编辑组件的item，每一列的数据
  const defaultInfo = ref({})

  const handleCreateData = () => {
    //方式一：if判断是否有值
    //(数据生命周期不一致的情况，为了防止新建对话框的使用，所以创建的时候给数据重新赋值)
    defaultInfo.value = {}
    if (pageModelRef.value) {
      pageModelRef.value.dialogVisible = true
    }
    createCb && createCb()
  }
  //B1. 绑定值，并且做一个浅拷贝，把新对象放入value内部
  const handleEditData = (item: any) => {
    defaultInfo.value = { ...item }
    //方式二： 直接断言
    pageModelRef.value!.dialogVisible = true
    // return item
    //L1: 回调函数传递参数出去,修改一下类型里面的参数也需要加item
    editCb && editCb(item)
  }
  return [pageModelRef, defaultInfo, handleCreateData, handleEditData]
}
